package main

import (
	"fmt"
	"log"
	"net/http"
	"strings"

	"github.com/PuerkitoBio/goquery"
)

// Item 结构体用于存储爬取到的数据
type Item struct {
	Title    string
	ImageURL string
	GameURL  string
}

func main() {
	// 示例URL，请替换为实际要爬取的页面URL
	url := "https://www.steamqi.vip/qbyx"

	// 发送HTTP GET请求
	resp, err := http.Get(url)
	if err != nil {
		log.Fatal(err)
	}
	defer resp.Body.Close()

	// 使用goquery加载HTML文档
	doc, err := goquery.NewDocumentFromReader(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	// 查找所有<li>元素，并遍历它们
	doc.Find(".entry-media").Each(func(i int, s *goquery.Selection) {
		// 查找当前<li>中的<h3>元素，并获取其文本内容作为标题
		title := s.Find("a").AttrOr("title", "not found")
		gameURL := s.Find("a").AttrOr("href", "not found")
		imageURL := s.Find("a").Find("img").AttrOr("data-src", "not found")

		// 将爬取到的数据保存到Item结构体中
		item := Item{
			Title:    strings.TrimSpace(title), // 去除标题两边的空白字符
			ImageURL: imageURL,
			GameURL:  gameURL,
		}

		// 打印结果，实际使用中可能是保存到数据库或文件中
		fmt.Printf("Item %d: Title=%s, ImageURL=%s , GameURL=%s\n", i+1, item.Title, item.ImageURL, item.GameURL)
	})
}
